// $Id: ns.hpp 2 2009-09-02 08:47:42Z joseph2002 $
/*
 * Copyright 2009 Joseph Wu
 * Distributed under the Boost Software License, Version 1.0.
 * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 *
 * For more information, see http://xpcomplus.sourceforge.net
 */

#ifndef XPGEN_NS_HPP
#define XPGEN_NS_HPP

#include <cstddef>
#include <string>
#include <vector>

namespace xpgen {
namespace ns {

//
// ns -> xx.xx.xx
// ns_cpp -> xx::xx::xx
// qname -> xx.xx.xx.name
// qname_cpp -> xx::xx::xx::name
//

void get_ns_list(std::vector<std::string>& ns_list, const std::string& ns);
std::string get_ns_cpp(
        const std::vector<std::string>& ns_list,
        std::size_t n1, std::size_t n2);
std::string get_ns_cpp(const std::vector<std::string>& ns_list);

std::string get_qname(const std::string& ns, const std::string& name);
std::string get_qname_cpp(const std::string& ns_cpp, const std::string& name);

std::string get_relative_ns_cpp(
        const std::vector<std::string>& ns_list,
        const std::vector<std::string>& in_ns_list);

std::string get_relative_ns_cpp(
        const std::string& ns,
        const std::string& in_ns);

} // namespace xpgen::ns
} // namespace xpgen

#endif // XPGEN_NS_HPP
